const http= require('http');
const fs= require('fs');
const path= require('path');
const url= require('url');
var mimeModule=require('./model/getmimefromfile')
 
var events =require('events');
var EventEmitter =new events.EventEmitter(); 

http.createServer(function (req, res) {
    //使用path模块中的extname方法获取文件后缀名
    

    let pathname=url.parse(req.url).pathname ;
    if(pathname=='/'){
        pathname='index.html'
        
    }
    var extname=path.extname(pathname) 
    if (pathname!=='./favicon.ico') {
        fs.readFile('./static/'+pathname,(err,data)=>{

            if(err){
                fs.readFile('./static/404.html',(err,data_404)=>{                    
                    res.writeHead(404, {'Content-Type': 'text/html;charset="utf-8"'});
                    res.write(data_404)
                    res.end();
                });
                return;
            }else{
                /**解决readFile异步问题 */

                //方法1: 使用readFileSync 
                /* 
                var mime=mimeModule.getMime(fs,extname); 
                console.log(30,mime)
                res.writeHead(200, {'Content-Type': ''+mime+';charset="utf-8"'});
                res.write(data)
                res.end();
                */

                //方法2: 使用回调函数 
                /*mimeModule.getMime(fs,extname,(val)=>{
                    var mime=val;
                    res.writeHead(200, {'Content-Type': ''+mime+';charset="utf-8"'});
                    res.write(data)
                    res.end();
                })*/

                //方法3: 使用 eventsm模块中的 events.EventEmitter方法使用res.write会报错
                mimeModule.getMime(fs,extname,EventEmitter)
                EventEmitter.on('emit_mime',(mime)=>{
                    res.writeHead(200, {'Content-Type': ''+mime+';charset="utf-8"'});
                    // res.write()
                    res.end(data);
                })
            }
            
        })
    }
  

}).listen(8081);